home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-12-27 | 7.7 KB | 254 lines | [????/????] |
- #!/bin/csh -f
- #
- #Sorry Mike (or other maintainer)
- #
- #but this is the first time I have added something.
- #
- #This is a super awesome unix ftp script (IMHO).
- #
- #I know you guys like people to use gopher and other
- #things but I found this to be really slick.
- #
- #I hope I put this in the right place and have given
- #you enough info.
- #
- #Thanks!
- #
- #-Jack
- #
- #
- #/---------------------------------------------------------\
- #| Jack W. Judy Office: (510) 642-1010 |
- #| Electrical Engineering FAX: (510) 643-6637 |
- #| 497 Cory Hall (BSAC) Lab: (510) 642-2716 |
- #| University of California Home: (510) 849-2604 |
- #| Berkeley, CA 94720 email: j.judy@ieee.org |
- #\---------------------------------------------------------/
- #
- # ftpumich
- #
- # This script was written for all those people frustrated with the limited
- # number of guest logins at the popular umich Mac archive. It skips from
- # mirror to mirror until it succeeds. It always works for me. NO MORE WAITING.
- #
- # Comments and suggestions/improvements are welcome.
- #
- # Written by Jack Judy <j.judy@ieee.org> 12-21-93
- #
-
- # Some variables you may want to tweek to your liking.
- @ sleep_time = 0
- @ maxcount = 1
- @ VERBOSE = 1
-
- if ( $#argv == 0 || $#argv > 1 ) then
- if ( $VERBOSE == 1 ) then
- echo ""
- echo "usage: ftpumich [file_containing_compete_pathnames]"
- echo "usage: ftpumich"
- echo ""
- echo "The file (file_containing_compete_pathnames) holds the COMPLETE"
- echo "pathnames of the files you want to 'ftp'. The pathname format"
- echo "of the files is that of the awesome archive at archive.umich.edu."
- echo ""
- echo "Example:"
- echo ""
- echo "j.judy@ieee.org 22> cat new_umich_stuff"
- echo "/mac/00help/newthings.txt"
- echo "/mac/00ls-lRfile"
- echo "j.judy@ieee.org 23> ftpumich new_umich_stuff"
- echo ""
- echo "The order in which the ftp sites/mirrors are attempted"
- echo "is given below. The first ftp site is choosen to be the"
- echo "uiowa site because things are not binhexed. Saves work."
- echo ""
- echo " grind.isca.uiowa.edu in mac/umich (no .hqx)"
- echo " archive.umich.edu in mac"
- echo " wuarchive.wustl.edu in mirrors/archive.umich.edu/mac"
- echo " archive.orst.edu in pub/mirrors/archive.umich.edu/mac"
- echo " archie.au in micros/mac/umich"
- echo " nic.switch.ch in mirror/umich-mac"
- echo " src.doc.ic.ac.uk in packages/mac/umich (with .gz)"
- echo " ftp.sunet.se in /pub/mac/mirror-umich"
- echo " ftp.inter.spin.ad.jp in pub/Mac/Merit.mirror"
- echo " ftp.technion.ac.il in pub/unsupported/mac/umich"
- echo " nctuccca.edu.tw in /Macintosh/umich-mac"
- echo " anl.anl.fr in /pub/mac/umich (with .z)"
- echo ""
-
- echo "If you pass no arguments then the files"
- echo " /mac/00help/newthings.txt"
- echo " /mac/00ls-lRfile"
- echo "will be transfered so that you may browse them for the files"
- echo "you wish to download."
- echo ""
- echo "A file called newthings.txt.greped will be created that holds"
- echo "only the complete pathnames for the newest files in the archive."
- echo ""
- echo "The easiest way to download files is to edit this file (newthings.txt.greped)"
- echo "and delete all the lines except for the files you wish to download."
- echo "Then simply rerun ftpumich with this edited file as the argument."
- echo "Presto. All the files will be obtained .. every time (practically)."
- echo ""
- echo "This program creates ~/.netrc macros. Each macro can't exceed 4k"
- echo "which is just less than attempting to ftp all the new files."
- echo "The ~/.netrc file is used and so a backup copy is saved as"
- echo "~/.netrc.ftpumich incase there is some sort of problem and"
- echo "your ~/.netrc file is not restored. Re-running this script with"
- echo "will not copy of the backup but instead it will restore the"
- echo "original ~/.netrc file."
- echo ""
- echo "+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+"
- echo ""
- endif
-
- if ( $#argv > 1 ) then
- exit 1
- endif
- endif
-
- if ( $#argv == 0 ) then
- echo "/mac/00help/newthings.txt"> ftpumich.tmp
- echo "/mac/00ls-lRfile" >> ftpumich.tmp
- set file = ftpumich.tmp
- if ( -f newthings.txt ) then
- rm -f newthings.txt
- endif
- if ( -f 00ls-lRfile ) then
- rm -f 00ls-lRfile
- endif
- else
- set file = $1
- endif
-
- echo ""
- echo "-----------------------------------------------------------------"
- echo "Now attmpting to ftp the following files:"
- cat $file
- echo "-----------------------------------------------------------------"
- echo ""
-
- if ( ! (-f ~/.netrc.ftpumich) && -f ~/.netrc ) then
- mv ~/.netrc ~/.netrc.ftpumich
- endif
-
- foreach machine ( grind.isca.uiowa.edu archive.umich.edu mirror.archive.umich.edu wuarchive.wustl.edu archive.orst.edu nic.switch.ch ftp.sunet.se ftp.inter.spin.ad.jp archie.au src.doc.ic.ac.uk anl.anl.fr ftp.technion.ac.il nctuccca.edu.tw )
- @ count = 0
-
- echo "machine $machine" > ~/.netrc
- echo "login anonymous" >> ~/.netrc
- if ( -f ~/.forward ) then
- echo "password `cat ~/.forward`" >> ~/.netrc
- else
- echo "password `echo $user`@`hostname`" >> ~/.netrc
- endif
- echo "macdef init" >> ~/.netrc
- echo "bin" >> ~/.netrc
- echo "hash" >> ~/.netrc
- echo "prompt" >> ~/.netrc
-
- # Defaults:
- set hqx = .hqx
- set suffix = ""
-
- switch ($machine)
- case grind.isca.uiowa.edu:
- set dir = /mac/umich
- set hqx =
- breaksw
- case archive.umich.edu:
- set dir = /mac
- breaksw
- case mirror.archive.umich.edu:
- set dir = /pub/mirrors/archive.umich.edu/mac
- breaksw
- case wuarchive.wustl.edu:
- set dir = /mirrors/archive.umich.edu/mac
- breaksw
- case archive.orst.edu:
- set dir = pub/mirrors/archive.umich.edu/mac
- breaksw
- case nic.switch.ch:
- set dir = mirror/umich-mac
- breaksw
- case ftp.sunet.se:
- set dir = /pub/mac/mirror-umich
- breaksw
- case ftp.inter.spin.ad.jp:
- set dir = pub/Mac/Merit.mirror
- breaksw
- case archie.au:
- set dir = /micros/mac/umich
- breaksw
- case ftp.technion.ac.il:
- set dir = pub/unsupported/mac/umich
- breaksw
- case src.doc.ic.ac.uk:
- set dir = /packages/mac/umich
- set suffix = ".gz"
- breaksw
- case anl.anl.fr:
- set dir = /pub/mac/umich
- set suffix = ".z"
- breaksw
- case nctuccca.edu.tw:
- set dir = /Macintosh/umich-mac
- breaksw
- endsw
- echo "### /;^) Attmepting to connect to $machine /;^) ###"
-
- echo ""
- echo "cd $dir" >> ~/.netrc
- cat $file | sed -e 's/^\/mac\///' | sed -e 's/.hqx//' | awk -F/ '{print "get", $0"'$hqx$suffix'", $NF"'$hqx$suffix'" }' >> ~/.netrc
- endif
- echo "quit" >> ~/.netrc
- echo "" >> ~/.netrc
- chmod 600 ~/.netrc
-
- set length_before = `/bin/ls -l | wc -l`
-
- while ( `/bin/ls -l | wc -l` <= $length_before && $count < $maxcount )
- ( echo "quit" ) | ftp $machine
- if ( `/bin/ls -l | wc -l` == $length_before ) then
- @ count ++
- echo ""
- echo "### /:^( Attempt #"$count" of $maxcount to connect to $machine has failed. /:^( ###"
- echo ""
- echo "-----------------------------------------------------------------"
- echo ""
- sleep $sleep_time
- else
- echo ""
- echo "-----------------------------------------------------------------"
- echo ""
- @ new = `/bin/ls -l | wc -l` - $length_before
- echo "Finished ftp'ing (Successfully I think. Number of new files = ($new)"
- echo ""
- mv ~/.netrc.ftpumich ~/.netrc
- chmod 600 ~/.netrc
- rm -f ftpumich.tmp
- if ( $#argv == 0 ) then
- if ( -f newthings.txt.gz ) then
- unzip newthings.txt.gz
- endif
- if ( -f newthings.txt.Z ) then
- uncompress newthings.txt.Z
- endif
- cat newthings.txt | grep "^\/mac\/" > newthings.txt.greped
- echo ""
- echo "Please edit the file called (newthings.txt.greped) and delete the lines"
- echo "that contain filenames you do not wish to ftp."
- compress 00ls-lRfile
- echo ""
- endif
- exit 0
- endif
- end
-
- end
-
- echo "All attempts to ftp have failed."
- mv ~/.netrc.ftpumich ~/.netrc
- chmod 600 ~/.netrc
- rm -f ftpumich.tmp
-